#pragma once
#include "Syntax/Expression/Expression.hpp"
#include "Syntax/Statement/Statement.hpp"
#include "Syntax/Token.hpp"

class ForStatementSyntax : public StatementSyntax
{
public:
    SharedToken      KeyWord;
    SharedToken      Identifier;
    SharedToken      EqualsToken;
    SharedExpression LowerBound;
    SharedToken      ToKeyWord;
    SharedExpression UpperBound;
    SharedStatement  Body;

public:
    ForStatementSyntax(SharedToken      keyword,
                       SharedToken      identifier,
                       SharedToken      equalsToken,
                       SharedExpression lowerBound,
                       SharedToken      toKeyword,
                       SharedExpression upperBound,
                       SharedStatement  body)
        : StatementSyntax(SyntaxKind::ForStatement, "ForStatement"), KeyWord(keyword), Identifier(identifier), EqualsToken(equalsToken),
          LowerBound(lowerBound), ToKeyWord(toKeyword), UpperBound(upperBound), Body(body)
    {
    }
    ~ForStatementSyntax() = default;
};
